;########核心函数：DFS递归函数########
;DFS递归函数，将目前的ROW,COL存在DX,CX,将当前坐标的VISIBLE[DX][CX]设置为FFH，若其的JUDGE表中的
;值为0，则将其周边的八个单元格都递归调用本函数
DFS PROC
    PUSH DX
    PUSH CX
    PUSH SI
    ;检测是否越界,越界则结束
    CHECK_OUT_BOUND DX,CX
    CMP SI,0
    JZ DFS_OVER
    ;获取TABLE[DX],[CX]的偏移量存在SI中
    POSITION_REC DX,CX
    ;检测是否已经可视(右键设置雷或者已经点开)，可视则结束
    CMP VISIBLE_TABLE[SI],FFH
    JZ DFS_OVER
    CMP VISIBLE_TABLE[SI],0FH
    JZ DFS_OVER
    ;将VISIBLE_TABLE[DX][CX],设置为FFH
    MOV VISIBLE_TABLE[SI],FFH
    ;判断JUDGE_TABLE[DX][CX]是否为0
    CMP JUDGE_TABLE[SI],0
    JNZ DFS_OVER
    ;若为0则将其周边的八个单元格都递归调用本函数
    ;[DX-1][CX-1]
    DEC DX
    DEC CX
    CALL DFS
    ;[DX-1][CX]
    INC CX
    CALL DFS
    ;[DX-1][CX+1]
    INC CX
    CALL DFS
    ;[DX][CX+1]
    INC DX
    CALL DFS
    ;[DX+1][CX+1]
    INC DX
    CALL DFS
    ;[DX+1][CX]
    INC CX
    CALL DFS
    ;[DX+1][CX-1]
    INC CX
    CALL DFS
    ;[DX][CX-1]
    DEC DX
    CALL DFS
    
DFS_OVER:    
    POP SI
    POP CX
    POP DX
    RET
END ENDP